1000 REM"[211]=SAVE"0:6TIMER B SHOW",8 1010 [143]"ATN_1150 1020 REM---------------------------- 1030 REM 6526/CIA TIMER-B LIZ DEAL 1040 REM---------------------------- 1050 TM=08:MC=832:B0=176 1052 IFPEEK(MC)*PEEK(MC+1)<>76*75THENFORJ=832TO1022:READV:POKEJ,V:NEXTJ 1060 I$="":PRINT"[155][147]"; 1070 PRINT"  TIMEOUT: :INTBIT " 1080 INPUT" DO TEST 1 2 1[157][157][157]";I$ 1090 POKEB0,TM 1100 ONASC(I$+"0")-48GOTO1120,1130 1110 END 1120 SYSMC:GOTO1060 1130 SYSMC+6:SYSMC+3:GOTO1060 1135 REM SOURCE CODE BELOW CAN BE OMITTED 1137 REM DATA FROM 5000 ON MUST BE ENTERED 1140 REM---------------------------- 1150 SYS700 ;PAL 1160 .OPT OO 1170 *=$0340 ;SAVE TO $3FF 1180 ; 1190 JMP TEST1 1200 JMP TEST2 1210 JMP NMISW 1220 HERE .WORD MYNMI 1230 ; 1240 P =17*40+28 ;FOR SCREEN 1250 CIA2 =$DD00 ;NON-KB CIA 1260 TA2 =CIA2+4 ;TIMER A 1270 TB2 =CIA2+6 ;TIMER B 1280 CRA2 =CIA2+$E ;CTRL REG A 1290 CRB2 =CIA2+$F ;CTRL REG B 1300 ICR2 =CIA2+$D ;INT CTRL+FLAGS 1310 CIA1 =$DC00 ;THE OTHER CIA 1320 PRB1 =CIA1+1 ;STOP KEY HERE 1330 COL =$D800 1340 MASK1 =%00000010 1350 MASK2 =%10000010 1360 CTRLKY =$FB 1370 ANYNMI =$318 1380 NORNMI =$FE47 1390 INEX =$FEBC 1400 VAL =$B0 ;(null)ES INTO TB2 1410 ONCE =VAL+1 1420 TO =COL+P ;TO ALWAYS MOVES 1430 IN =COL+P+1 ;IN,NOISE WHEN 1440 NOISE =$D418 ;TIMERB SETS FLG 1450 ;--------------------------------- 1460 ;TB SOMETIMES FAILS TO SET A FLAG 1470 ;SHOW#1 - NOT ASKING FOR INTERRUPT 1480 ;--------------------------------- 1490 TEST1 =* 1500 LDA ICR2 1510 SEI:LDA #%01111111:JSR SETUP 1520 LDA #MASK1 1530 WAIT =* 1540 JSR TESTSTOP:BEQ QUIT 1550 ; WATCH TIMER B RELOAD 1560 JSR WATCH 1570 ; CHECK TIMEOUT FLAG,LOOP IF 0 1580 BIT ICR2:BEQ WAIT 1590 ; FLAG WORKED THIS TIME 1600 JSR CLICK:BEQ WAIT ;ALWAYS MORE 1610 ; BACK TO BASIC 1620 QUIT CLI:RTS 1630 ;--------------------------------- 1640 ;SHOW#2 - ASKING FOR AN INTERRUPT 1650 ;SEEMS TO WORK MOST OF THE TIME 1660 ;=====(CAN'T PROVE NON-FAILURE!) 1670 ;--------------------------------- 1680 NMISW =* 1690 ; CLR FLAGS IN HOPE OF SURVIVING 1700 ; WHAT FOLLOWS 1710 LDA ICR2:LDA #%01111111:STA ICR2 1720 ; REVECTOR NMI STUFF TO HERE 1730 ; THIS CAN KILL YOU 1740 LDA HERE:LDX HERE+1:JSR SETVEC 1750 ; NOW TELL THE ICR & CLOCKS 1760 LDA #MASK2:JSR SETUP:RTS 1770 ; 1780 MYNMI =* 1790 PHA:LDA ICR2:AND #2:BEQ MYI2 1800 TXA:PHA:TYA:PHA:JSR CLICK:JMP INEX 1810 MYI2 PLA:JMP NORNMI 1820 ; 1830 TEST2 =* 1840 ; NOTHING BETTER TO DO LOOP 1850 JSR WATCH:JSR TESTSTOP:BNE TEST2 1860 ; SET THINGS BACK TO NORMAL 1870 LDA #0:STA ICR2 1880 LDA #NORNMI 1890 SETVEC =* 1900 STA ANYNMI:STX ANYNMI+1 1910 RTS 1920 ; 1930 TESTSTOP =* 1940 LDX PRB1:CPX #CTRLKY:RTS 1950 ; 1960 WATCH =* 1970 ; WATCHES TIMER B RELOAD 1980 ; IGNORE QUICK READING RESULTS 1990 LDX TB2:CPX VAL:BCC WATCH9 2000 CPX ONCE:BEQ WATCH9 2010 INC TO ;DISPL TIMEOUT 2020 WATCH9 STX ONCE:RTS 2030 ; 2040 CLICK =* ; & DISPL FLAG SET 2050 INC IN:LDX #8:STX NOISE 2060 SIG1 DEX:BNE SIG1 2070 STX NOISE:RTS ;Z=1 2080 ; 2090 SETUP =* 2100 STA ICR2:STA TO:STA IN:INC IN 2110 ; INIT CLOCKS (VAL*TA)WHATEVERS 2120 LDX #$FF:STX TA2:STX TA2+1 2130 INX:STX TB2+1:STX ONCE 2140 LDX VAL:STX TB2 2150 ; FORCE LOAD TIME,TB COUNTS TA 2160 ; TIMEOUTS, CONT MODE,CLOCKS RUN 2170 LDA #%00010001:STA CRA2 2180 LDA #%01010001:STA CRB2 2190 RTS 2200 .END 2210 END 5000 DATA 76,75,3,76,151,3,76,106 5001 DATA 3,129,3,173,13,221,120,169 5002 DATA 127,32,213,3,169,2,32,175 5003 DATA 3,240,13,32,181,3,44,13 5004 DATA 221,240,243,32,198,3,240,238 5005 DATA 88,96,173,13,221,169,127,141 5006 DATA 13,221,173,73,3,174,74,3 5007 DATA 32,168,3,169,130,32,213,3 5008 DATA 96,72,173,13,221,41,2,240 5009 DATA 10,138,72,152,72,32,198,3 5010 DATA 76,188,254,104,76,71,254,32 5011 DATA 181,3,32,175,3,208,248,169 5012 DATA 0,141,13,221,169,71,162,254 5013 DATA 141,24,3,142,25,3,96,174 5014 DATA 1,220,224,251,96,174,6,221 5015 DATA 228,176,144,7,228,177,240,3 5016 DATA 238,196,218,134,177,96,238,197 5017 DATA 218,162,8,142,24,212,202,208 5018 DATA 253,142,24,212,96,141,13,221 5019 DATA 141,196,218,141,197,218,238,197 5020 DATA 218,162,255,142,4,221,142,5 5021 DATA 221,232,142,7,221,134,177,166 5022 DATA 176,142,6,221,169,17,141,14 5023 DATA 221,169,81,141,15,221,96